import pandas as pd
import matplotlib.pyplot as plt

# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

def generate_shipping_pie_chart():
    try:
        # 读取数据文件
        file_path = 'FhjlViewDD.xlsx'
        df = pd.read_excel(file_path)

        # 计算各发货地的发货总量
        shipping_totals = df.groupby('发货地')['净重'].sum()

        # 绘制饼状图
        plt.figure(figsize=(10, 8))
        def autopct(x):
            return '%.1f%%' % x if x >= 3.8 else ''

        shipping_totals.plot(kind='pie',
                            autopct=autopct,
                            startangle=90,
                            pctdistance=1.1,
                            labeldistance=None)
        plt.axis('equal')  # 保证饼图是圆形
        plt.title('6月份各发货地的发货总量饼状图')
        plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))

        # 保存图片
        plt.savefig('(d)6月份各发货地的发货总量饼状图.png')
        print('饼状图已成功保存为 (d)6月份各发货地的发货总量饼状图.png')
    except FileNotFoundError:
        print(f'错误：未找到文件 {file_path}，请检查文件路径。')
    except Exception as e:
        print(f'发生未知错误：{e}')

if __name__ == '__main__':
    generate_shipping_pie_chart()